To support the enhancements introduced by the USB 3.0 specification, a new generation of USB 3.0 host controllers is required. While multiple USB 3.0 host controller implementations are possible, many of the major controllers released to date are compatible with the eXtensible Host Controller Interface (xHCI) specification.

Key motivations for adopting new host controllers such as xHCI include:


xHCI vs. Legacy Host Controllers

Unlike USB 2.0 companion controller architectures that require separate EHCI + UHCI/OHCI controllers, xHCI provides a single controller for all USB speeds.

Feature UHCI/OHCI + EHCI xHCI
Speeds Supported LS/FS (UHCI/OHCI) + HS (EHCI) LS, FS, HS, and SS — all in one
Number of Controllers 2+ per port set 1
Driver Complexity Multiple drivers required Single unified driver
Memory Polling Periodic polling of transfer descriptors No polling — uses doorbell registers
Power Efficiency Lower (constant memory polling) Higher (event-driven)
Companion Controllers Required Not required

xHCI Architecture Overview

The xHCI controller is organized around several key components:

Host Controller Registers

Data Structures in Host Memory

xHCI defines a set of data structures that reside in host system memory:

Doorbell Mechanism

  1. Software places TRBs on a Transfer Ring for a specific endpoint
  2. Software writes to the device's Doorbell Register to notify the controller
  3. The controller processes TRBs and performs the USB transactions
  4. The controller writes completion events to the Event Ring
  5. An interrupt is generated to notify software
Note

This event-driven model eliminates the need for periodic memory polling, which is a major power savings benefit over legacy EHCI controllers.


Device Slot Management


Interrupters and MSI/MSI-X